package com.hzc.springchan.enums;

import com.hzc.springchan.constant.System;

/**
 * 对内错误码和错误描述：aaw-privXX形式
 * @author chen990627
 * @date 2022/09/05
 */

public enum PrivError {

    /**
     * 全局：未定义异常
     */
    UNDEFINED(BusinessModel.GLOBAL, "01", "未定义异常"),
    /**
     * 全局：用户未登录
     */
    USER_NOT_LOGIN(BusinessModel.GLOBAL, "02", "用户未登录"),
    /**
     * 全局：token失效
     */
    TOKEN_EXPIRE(BusinessModel.GLOBAL, "03", "token失效"),
    /**
     * 全局：token无效
     */
    INVALID_TOKEN(BusinessModel.GLOBAL, "04", "token无效"),
    /**
     * 全局：数据库中未找到对应配置的资源
     */
    RESOURCE_UNDEFINED(BusinessModel.GLOBAL, "05", "数据库中未找到对应配置的资源"),
    /**
     * 全局：无权访问资源
     */
    RESOURCE_PERMISSION_FAILED(BusinessModel.GLOBAL, "06", "无权访问资源"),
    /**
     * 全局：接口未配置CPermission(CApi)
     */
    CPERMISSION_UNDEFINED(BusinessModel.GLOBAL, "07", "接口未配置CPermission(CApi)"),
    /**
     * 全局：参数校验失败
     */
    CPARAM_CHECK_FAILED(BusinessModel.GLOBAL, "08", "参数错误"),
    /**
     * 全局：时间格式转换失败
     */
    DATE_FORMAT_FAILED(BusinessModel.GLOBAL, "09", "时间格式转换失败"),
    /**
     * 全局：自动生成代码接口文件输出位置不存在
     */
    DIRECTORY_NOT_FOUND(BusinessModel.GLOBAL, "10", "自动生成代码接口文件输出位置不存在"),
    /**
     * 全局：自动生成代码接口文件输出位置不存在
     */
    GENERIC_CHECK_STATUS_ERROR(BusinessModel.GLOBAL, "11", "check状态异常，请检查代码"),
    /**
     * 全局：接口配置有误
     */
    CPERMISSION_CONFIG_ERROR(BusinessModel.GLOBAL, "12", "接口配置有误"),
    /**
     * 全局：用户已退出登录
     */
    TOKEN_EXPIRE_LOGOUT(BusinessModel.GLOBAL, "13", "用户已退出登录"),
    /**
     * 公共资源: 用户名不存在
     */
    LOGIN_USERNAME_ERROR(BusinessModel.ANONYMOUS, "01", "用户名错误"),
    /**
     * 公共资源: 密码错误
     */
    LOGIN_PASSWORD_ERROR(BusinessModel.ANONYMOUS, "02", "密码错误"),
    /**
     * 公共资源: 用户已存在
     */
    REGISTER_USERNAME_ERROR(BusinessModel.ANONYMOUS, "03", "用户已存在"),
    /**
     * 公共资源：注册保存信息失败
     */
    REGISTER_ERROR(BusinessModel.ANONYMOUS, "04", "注册保存信息失败"),
    /**
     * 公共资源：用户状态异常
     */
    USER_DEREGISTER(BusinessModel.USERINFO,"05","用户状态异常"),
    /**
     * 公共资源：用户不存在
     */
    USER_NOT_EXIST(BusinessModel.ANONYMOUS, "06", "用户不存在"),
    /**
     * 消息中心
     */
    NO_ANY_MESSAGE(BusinessModel.MESSAGE, "01", "此用户不存在任何消息");

    private BusinessModel model;

    private String code;

    private String errorDesc;

    PrivError(BusinessModel model, String code, String errorDesc) {
        this.model = model;
        this.code = code;
        this.errorDesc = errorDesc;
    }

    private String errorCode;

    public String getErrorDesc() {
        return this.errorDesc;
    }

    public String getErrorCode() {

        StringBuilder errorCode = new StringBuilder(System.Error.PREFIX);
        errorCode.append(model.getCode()).append(System.Error.INSIDE).append(code);
        return errorCode.toString();
    }
}
